#ifndef QDATASET_H
#define QDATASET_H

#include <QObject>
#include <QDebug>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlRecord>
#include <QSqlField>

#include "qdatatable.h"

// sql 执行结果集
class QDataSet
{
public:
    explicit QDataSet();
    QDataSet(QString sql,QVariantList args,QSqlError error);
    QDataSet(QSqlQuery query);

public:
    // 是否为空
    bool isEmpty();
    // 是否有错
    bool hasError();
    // 错误信息
    QString message();
    // 打印 sql 信息
    void print(bool count=true,bool lastAffect=false);

    // 第一个结果集
    QDataTable first();
    // 第 N 个结果集
    QDataTable at(int idx=0);
    // 最后一个结果集
    QDataTable last();
    // 第一个结果集的第一行第一列值
    QVariant scalar();
    // 结果集个数
    int count();

private:
    // 读取结果
    void read(QSqlQuery);

public:
    // 执行的 sql
    QString sql;
    // sql 参数
    QVariantList args;
    // 错误
    QSqlError error;

    // 影响行数
    int affected;
    // 最后插入 ID
    QVariant lastId;
    // 结果集
    QList<QDataTable> tables;
};

#endif // QDATASET_H
